package com.example.demo.util;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 日志工具类。
 * logger打印日志就会发送给logstash，可以将message里的内容系分便于查询日志，
 * 使用$$将所有字段链接起来，在logstash配置中，也使用$$将日志切分开
 *
 * @author admin
 * @date 2024-05-30
 */
public class LogUtils {

    /**
     * 主日志
     */
    private static final Logger logger = LoggerFactory.getLogger(LogUtils.class);


    /**
     * 输出日志-info
     *
     * @param model  行为可放方法名称等
     * @param action  可放订单号,请求参数等关键信息
     * @param message 日志详情
     */
    public static void outLogInfo(String model, String action, String message) {
        logger.info(join(model, action, message));
    }

    /**
     * 输出日志-error
     * 
     * @param model
     * @param action
     * @param message
     */
    public static void outLogError(String model, String action, String message) {
        logger.error(join(model, action, message));
    }

    /**
     * 使用$$将所有字段链接起来
     * 
     * @param model
     * @param action
     * @param message
     */
    private static String join(String model, String action, String msg) {
        return convertNullString(model) + "$$" + convertNullString(action)  + "$$" + msg;
    }

    /**
     * null转为空字符串
     */
    private static String convertNullString(String s) {
        return s == null ? "" : s;
    }

}
